package com.zmn.oms.dubbo.interfaces.zmn.shop.order;

import com.zmn.common.dto2.ResponseDTO;
import com.zmn.oms.dubbo.dto.zmn.order.CancelOrderDIO;
import com.zmn.oms.dubbo.dto.zmn.order.NewOrderDRO;
import com.zmn.oms.dubbo.dto.zmn.order.shop.*;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

/**
 * 类描述：店铺录单
 *
 * @author heciqi
 * @date 2019/8/21 16:15
 */
public interface ShopOrderWorkRemoteService {

    /**
     * 获取工单量
     * @return
     */
    ResponseDTO<Integer> getOrderCount();

    /**
     * 获取订单金额
     *
     * @param orderAmountByCalcDIO
     * @return
     * @see ShopOrderWorkRemoteService#calcOrderAmount(com.zmn.oms.dubbo.dto.zmn.order.shop.CalcOrderAmountDIO)
     */
    ResponseDTO<OrderAmountByCalcDRO> getOrderAmountByCalc(OrderAmountByCalcDIO orderAmountByCalcDIO);

    /**
     * 校验订单产品数量
     * @param
     * @return
     */
    @ApiOperation(value = "校验订单产品数量", notes = "下单时校验产品数量是否符合条件")
    ResponseDTO<Boolean> checkOrderProductNumber(@ApiParam("校验订单产品数量") CheckOrderProductNumberDIO checkOrderProductNumberDIO);

    /**
     * 计算订单金额
     *
     * @param calcOrderAmountDIO
     * @return
     */
    ResponseDTO<CalcOrderAmountDRO> calcOrderAmount(CalcOrderAmountDIO calcOrderAmountDIO);
    /**
     * 新增工单
     *
     * @param newOrderDIO
     * @return
     */
    ResponseDTO<NewOrderDRO> addOrder(NewShopOrderDIO newOrderDIO);

    /**
     * 新增计价器订单
     *
     * @param newOrderDIO
     * @return
     */
    ResponseDTO<NewOrderDRO> addQuotationOrder(NewShopOrderDIO newOrderDIO);

    /**
     * 修改订单产品&服务项
     *
     * @param updateOrderServiceItmeDIO
     * @return
     */
    ResponseDTO<Boolean> updateQuotationOrderProduct(UpdateQuotationOrderProductDIO updateOrderServiceItmeDIO);

    /**
     * 取消订单
     *
     * @param cancelOrderDIO
     * @return
     */
    ResponseDTO cancelOrder(CancelOrderDIO cancelOrderDIO);
}